/**

 @Name：layuiAdmin 权限管理 管理员管理 角色管理
 @Author：star1029
 @Site：http://www.layui.com/admin/
 @License：LPPL

 */


layui.define(['table', 'form', 'extensive','treeTable'], function (exports) {
    var $ = layui.$
        , table = layui.table
        , form = layui.form;

    var table = layui.table;
    var layer = layui.layer;
    var treetable = layui.treeTable;
    //渲染表格

    tb=treetable.render({
        //toolbar:'toolbar',
        elem: '#LAY-privilege-manage',
        id:'LAY-privilege-manage',
        tree: {
            iconIndex: 2,           // 折叠图标显示在第几列
            isPidData: true,        // 是否是id、pid形式数据
            idName: 'id',  // id字段名称
            pidName: 'dependentId'     // pid字段名称
        },
        cols: [[
            {type: 'checkbox'},{field: 'id', width: 100, title: 'ID', sort: true},
            {field: 'name', title: '权限名称'},
            {field: 'url', title: '权限地址'},
            {title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-privilegeAdmin-webprivilege'}
        ]]

        , page: true
        , limit: 30
        , height: 'full-180'
        , text: '对不起，加载出现异常！',
        reqData: function(data, callback) {
            // 在这里写ajax请求，通过callback方法回调数据
            $.get('/privilege/list',this.where, function (res) {
                if(res.code==0) callback(res.data.list);
                else callback(res.message);
            });
        }
    });
    //监听排序事件
    treetable.on('sort(LAY-privilege-manage)', function (obj) { //注：sort 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"

        //尽管我们的 table 自带排序功能，但并没有请求服务端。
        //有些时候，你可能需要根据当前排序的字段，重新向服务端发送请求，从而实现服务端排序，如：
        treetable.reload('LAY-privilege-manage', {
            initSort: obj //记录初始排序，如果不设的话，将无法标记表头的排序状态。
            , where: { //请求参数（注意：这里面的参数可任意定义，并非下面固定的格式）
                sort: obj.field //排序字段
                , order: obj.type //排序方式
            }
        });
    });
    //监听工具条
    treetable.on('tool(LAY-privilege-manage)', function (obj) {
        var data = obj.data;
        if (obj.event === 'del') {
            layer.confirm('真的删除行么', function (index) {
                var loading = layer.load(0, {
                    shade: false
                });
                $.post('/privilege/delete', {id: JSON.stringify([data.id])}, function (result) {
                    if (result.code == 0) {
                        obj.del();
                    } else {
                        layer.open({
                            title: '修改失败',
                            content: result.message
                        });
                    }
                }, 'json').complete(function () {
                    layer.close(loading);
                })

                layer.close(index);
            });
        } else if (obj.event === 'edit') {
            var tr = $(obj.tr);

            layer.open({
                type: 2
                , title: '编辑权限'
                , content: ['/privilege/edit?id=' + obj.data.id,'no']
                , maxmin: true
                , area: ['500px', '500px']
                , btn: ['确定', '取消']
                , yes: function (index, layero) {
                    var iframeWindow = window['layui-layer-iframe' + index]
                        , submitID = 'LAY-privilege-front-submit'
                        , submit = layero.find('iframe').contents().find('#' + submitID);

                    //监听提交
                    iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
                        var field = data.field; //获取提交的字段
                        var loading = layer.load(0, {
                            shade: false
                        });

                        let privilege = {};
                        privilege.id = field.id;
                        privilege.name = field.name;
                        privilege.dependentId = field.dependentId;
                        privilege.url=field.url;

                        if(privilege.id==privilege.dependentId){
                            layer.open({
                                title: '错误',
                                content: '父权限不能设置为引用自身'
                            });
                            return;
                        }

                        $.post('/privilege/update', {
                            privilege: JSON.stringify(privilege)
                        }, function (result) {
                            if (result.code == 0) {
                                tb.reload(); //数据刷新
                                layer.close(index); //关闭弹层
                            } else {
                                layer.open({
                                    title: '修改失败',
                                    content: result.message
                                });
                            }
                        }, 'json').complete(function () {
                            layer.close(loading);
                        })
                        //提交 Ajax 成功后，静态更新表格中的数据
                        //$.ajax({});

                    });

                    submit.trigger('click');
                }
                , success: function (layero, index) {

                }
            });
        }
    });


    exports('privilegeAdmin', {tb})
});